home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / share / aclocal / visibility.m4 < prev    next >
Encoding:
M4 Source File  |  2008-03-13  |  2.1 KB  |  53 lines

  1. # visibility.m4 serial 1 (gettext-0.15)
  2. dnl Copyright (C) 2005 Free Software Foundation, Inc.
  3. dnl This file is free software; the Free Software Foundation
  4. dnl gives unlimited permission to copy and/or distribute it,
  5. dnl with or without modifications, as long as this notice is preserved.
  6.  
  7. dnl From Bruno Haible.
  8.  
  9. dnl Tests whether the compiler supports the command-line option
  10. dnl -fvisibility=hidden and the function and variable attributes
  11. dnl __attribute__((__visibility__("hidden"))) and
  12. dnl __attribute__((__visibility__("default"))).
  13. dnl Does *not* test for __visibility__("protected") - which has tricky
  14. dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
  15. dnl MacOS X.
  16. dnl Does *not* test for __visibility__("internal") - which has processor
  17. dnl dependent semantics.
  18. dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
  19. dnl "really only recommended for legacy code".
  20. dnl Set the variable CFLAG_VISIBILITY.
  21. dnl Defines and sets the variable HAVE_VISIBILITY.
  22.  
  23. AC_DEFUN([gl_VISIBILITY],
  24. [
  25.   AC_REQUIRE([AC_PROG_CC])
  26.   CFLAG_VISIBILITY=
  27.   HAVE_VISIBILITY=0
  28.   if test -n "$GCC"; then
  29.     AC_MSG_CHECKING([for simple visibility declarations])
  30.     AC_CACHE_VAL(gl_cv_cc_visibility, [
  31.       gl_save_CFLAGS="$CFLAGS"
  32.       CFLAGS="$CFLAGS -fvisibility=hidden"
  33.       AC_TRY_COMPILE(
  34.         [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
  35.          extern __attribute__((__visibility__("default"))) int exportedvar;
  36.          extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
  37.          extern __attribute__((__visibility__("default"))) int exportedfunc (void);],
  38.         [],
  39.         gl_cv_cc_visibility=yes,
  40.         gl_cv_cc_visibility=no)
  41.       CFLAGS="$gl_save_CFLAGS"])
  42.     AC_MSG_RESULT([$gl_cv_cc_visibility])
  43.     if test $gl_cv_cc_visibility = yes; then
  44.       CFLAG_VISIBILITY="-fvisibility=hidden"
  45.       HAVE_VISIBILITY=1
  46.     fi
  47.   fi
  48.   AC_SUBST([CFLAG_VISIBILITY])
  49.   AC_SUBST([HAVE_VISIBILITY])
  50.   AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
  51.     [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
  52. ])
  53.